(()=>{
    // 继承： 类与类之间的关系
    // 继承后类与类之间的叫法

    // A 类继承了B这个类， 那么此时 A类叫子类，B类叫基类

    // 子类----> 派生类
    // 基类----> 超类(父类)

    
    class Person {
        // 定义属性
        name:string
        age:number
        gender: string
        
        constructor(name:string, age:number, gender:string) {
            this.name = name 
            this.age = age
            this.gender = gender
        }


        sayHi():void {
            console.log(`我是：${this.name}`)
        }
    }

    // 定义一个学生类， 继承自 Person
    class Student extends Person {
        constructor(name:string, age:number, gender:string) {
            super(name, age, gender)
        }
       
        sayHi() {
            console.log('我是 student 类')
            super.sayHi()
        }
    }

    const person = new Person('小明', 21, '男')
    person.sayHi()

    const stu = new Student('小红', 21, '女')
    stu.sayHi()

    // 总结： 类和类继承， 用 extends 
    // 子类中使用父类的属性和方法，用 super
    // 子类可以重写父类的方法

})()